1、滑动窗口的最大值
思想：就是遍历每个窗口的最大值，2个for，
class Solution {
public:
    vector<int> maxInWindows(const vector<int>& num, unsigned int size) {
        vector<int> v;
        if(size>num.size())
            return v;
        if(size==0)
            return v;
        for(int i=0;i<num.size()-size+1;i++)
        {
            int m=num[i];
            for(int j=i;j<i+size;j++)
            {
                if(m<num[j])
                    m=num[j];
            }
            v.push_back(m);
        }
        return v;
    }
};

2、5个牌是否为顺子
思想：只有0可以重复，最大值-最小值不能大于4  按照着2点就可以算出来
class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        if(numbers.size()!=5)
            return false;
        sort(numbers.begin(),numbers.end());
        int count=0;
        int index=0;
        int max=0;
        int min=0;
        //找出0的个数，并且找出第一个不为0的数的下标
        while(index<5&&numbers[index]==0)
        {
            count++;
            index++;
        }
        if(index<4)
        {
            max=numbers[4];
            min=numbers[index];
        }
        else
            return true;
        if(max-min>4)
            return false;
        for(int i=index;i<4;i++)
        {
            if(numbers[i]==numbers[i+1])
                return false;
            else
            {
                count=count-(numbers[i+1]-numbers[i]-1);
            }
        }
        if(count<0)
            return false;
        return true;
    }
};
二叉树的序列化与反序列化
思想：其实都是按照层次遍历算的，就是把一层的节点放到queue里面，出来一个就找他的孩子或构造
